package json

import (
	"encoding/json"

	"github.com/anydev/simple_gin/pkg/config/encoder"
)

// JSONEncoder 实现了 Encoder 接口，用于编码和解码 JSON 格式的配置数据
type jsonEncoder struct{}

// Encode 编码配置数据为 JSON 格式的字节流
func (j jsonEncoder) Encode(v interface{}) ([]byte, error) {
	return json.Marshal(v)
}

// Decode 解码 JSON 格式的字节流为配置数据
func (j jsonEncoder) Decode(d []byte, v interface{}) error {
	return json.Unmarshal(d, v)
}

// String 返回编码器的名称
func (j jsonEncoder) String() string {
	return "json"
}

// NewEncoder 创建一个新的 JSON 编码器
func NewEncoder() encoder.Encoder {
	return jsonEncoder{}
}
